package cn.iocoder.yudao.module.ai.controller.admin.material.vo;

import cn.iocoder.yudao.module.ai.controller.admin.materialreleasefile.vo.MaterialReleaseFileRespVO;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;

import org.apache.ibatis.type.JdbcType;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 素材管理 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23102")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "素材名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("素材名称")
    private String name;

    @Schema(description = "素材描述", example = "随便")
    @ExcelProperty("素材描述")
    private String description;

    @Schema(description = "素材来源 ： sd 手动上传 ；wl 识别 ；dz 电子封条同步；参考字典类型（material-library-type）", example = "1")
    @ExcelProperty("素材来源 ： sd 手动上传 ；wl 识别 ；dz 电子封条同步；参考字典类型（material-library-type）")
    private String sourceType;

    @Schema(description = "素材类型 1 图片；2 视频；参见字典material-type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("素材类型 1 图片；2 视频；参见字典material-type")
    private String fileType;

    @Schema(description = "所属企业")
    @ExcelProperty("所属企业")
    private String ownerOrg;

    @Schema(description = "所属企业名称", example = "王五")
    @ExcelProperty("所属企业名称")
    private String ownerOrgName;

    @Schema(description = "场景分类，参见字典 scene-classification", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("场景分类，参见字典 scene-classification")
    private String senceType;

    @Schema(description = "文件原始名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("文件原始名称")
    private String fileOriginalName;

    @Schema(description = "文件存储路径", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("文件存储路径")
    private String fileUploadPath;

    /**
     * 下载地址
     */
    private String url;

    @Schema(description = "时长（针对视频）秒")
    @ExcelProperty("时长（针对视频）秒")
    private Long duration;

    @Schema(description = "包含文件数量")
    @ExcelProperty("包含文件数量")
    private Integer containFileNum;

    @Schema(description = "文件大小")
    @ExcelProperty("文件大小")
    private Long fileSize;

    @Schema(description = "修复状态", example = "1")
    @ExcelProperty("修复状态")
    private String repairStatus;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "供应商id", example = "19072")
    @ExcelProperty("供应商id")
    private Long suplierId;

    /**
     * 素材来源名称
     */
    private String sourceTypeName;

    /**
     * 素材来源名称
     */
    private String fileTypeName;
    /**
     * 场景名称
     */
    private String senceTypeName;

    /**
     * 压缩包中包含的 第一个 文件地址
     */
    private String firstFileUrl;

    /**
     * 创建者名称
     */
    private String creatorName;

    /**
     * 上传者名称
     */
    private String uploderName;

    /**
     * 素材解压缩文件列表(详情接口赋值)
     */
    private List<MaterialReleaseFileRespVO> releaseFileList;

    /**
     * 最后更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String updater;
}